/**
 * 关于JVM内存管理的示例
 *
 * @author Liu Yicong
 * @date 2025/10/3
 */
public class JVMMemoryTest {
	// 静态变量：在方法区/元空间
	private static int STATIC_COUNT = 0;

	// 实例变量：在堆中
	private String name = "Default";

	// 构造函数
	public JVMMemoryTest(String instanceName) {
		this.name = instanceName;
		STATIC_COUNT++;
	}

	// 普通方法
	public void calculate(int a) {
		// 局部变量：在栈中
		int b = 10;
		int result = a + b;
		System.out.println(result);
		a = 11;
	}

	public static void main(String[] args) {
		// main 方法的局部变量和引用
		int x = 5;

		// 对象创建与引用
		JVMMemoryTest obj1 = new JVMMemoryTest("Instance_A");

		// 调用方法
		obj1.calculate(x);
		System.out.println(x);

		// 第二个对象
		JVMMemoryTest obj2 = new JVMMemoryTest("Instance_B");
		System.out.println(obj2.name);
		System.out.println(STATIC_COUNT);
	}
}
